﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Specialized;
using System.Globalization;

namespace PagamentoDigital {
    
    public class Cliente {

        private string _nome;
        private string _rg;
        private DateTime _dataEmissaoRG;
        private string _orgaoEmissorRG;
        private string _ufEmissorRG;
        private long _cpf;
        private long _cnpj;
        private string _razaoSocial;
        private Sexo _sexo;
        private DateTime _dataNascimento;//dd-mm-aaaa
        private string _cep;
        private string _endereco;
        private string _complementoEndereco;
        private string _bairro;
        private string _cidade;
        private string _uf;
        private int _telefoneDDD;
        private int _telefone;
        private int _celularDDD;
        private int _celular;
        private string _email;

        #region Propriedades
        public string Nome {
            get { return _nome; }
            set { _nome = value; }
        }

        public string RG {
            get { return _rg; }
            set { _rg = value; }
        }

        public DateTime DataEmissaoRG {
            get { return _dataEmissaoRG; }
            set { _dataEmissaoRG = value; }
        }

        public string OrgaoEmissorRG {
            get { return _orgaoEmissorRG; }
            set { _orgaoEmissorRG = value; }
        }

        public string UFEmissorRG {
            get { return _ufEmissorRG; }
            set { _ufEmissorRG = value; }
        }

        public long CPF {
            get { return _cpf; }
            set { _cpf = value; }
        }

        public long CNPJ {
            get { return _cnpj; }
            set { _cnpj = value; }
        }

        public string RazaoSocial {
            get { return _razaoSocial; }
            set { _razaoSocial = value; }
        }

        public Sexo Sexo {
            get { return _sexo; }
            set { _sexo = value; }
        }

        public DateTime DataNascimento {
            get { return _dataNascimento; }
            set { _dataNascimento = value; }
        }

        public string Cep {
            get { return _cep; }
            set { _cep = value; }
        }

        public string Endereco {
            get { return _endereco; }
            set { _endereco = value; }
        }

        public string ComplementoEndereco {
            get { return _complementoEndereco; }
            set { _complementoEndereco = value; }
        }

        public string Bairro {
            get { return _bairro; }
            set { _bairro = value; }
        }

        public string Cidade {
            get { return _cidade; }
            set { _cidade = value; }
        }

        public string UF {
            get { return _uf; }
            set { _uf = value; }
        }

        public int TelefoneDDD {
            get { return _telefoneDDD; }
            set { _telefoneDDD = value; }
        }

        public int Telefone {
            get { return _telefone; }
            set { _telefone = value; }
        }

        public int CelularDDD {
            get { return _celularDDD; }
            set { _celularDDD = value; }
        }

        public int Celular {
            get { return _celular; }
            set { _celular = value; }
        }

        public string Email {
            get { return _email; }
            set { _email = value; }
        }
        #endregion

        public Cliente() {

        }

        public NameValueCollection GetParametros(CultureInfo culture) {
            NameValueCollection nvc = new NameValueCollection();
            nvc.Add("nome", this._nome);
            nvc.Add("rg", this._rg);
            nvc.Add("data_emissao_rg", this._dataEmissaoRG.ToString("yyyy-MM-dd"));
            nvc.Add("orgao_emissor_rg", this._orgaoEmissorRG);
            nvc.Add("estado_emissor_rg", this._ufEmissorRG);
            nvc.Add("cpf", string.Format(culture, "{0}", this._cpf));
            nvc.Add("sexo", string.Format(culture, "{0}", (char)this._sexo));
            nvc.Add("data_nascimento", this._dataEmissaoRG.ToString("dd-MM-yyyy"));
            nvc.Add("telefone", string.Format(culture, "{0}{1}", this._telefoneDDD, this._telefone));
            nvc.Add("celular", string.Format(culture, "{0}{1}", this._celularDDD, this._celular));
            nvc.Add("endereco", this._endereco);
            nvc.Add("complemento", this._complementoEndereco);
            nvc.Add("bairro", this._bairro);
            nvc.Add("cidade", this._cidade);
            nvc.Add("estado", this._uf);
            nvc.Add("cep", this._cep);
            nvc.Add("cliente_razao_social", this._razaoSocial);
            nvc.Add("cliente_razao_cnpj", string.Format(culture, "{0}", this._cnpj));
            nvc.Add("email", this._email);
            return nvc;
        }

    }

    public enum Sexo { 
        Masculino = 'M',
        Feminino = 'F'
    }
}
